package main

import (
	"context"
	"fmt"
	"log"
	"time"

	"gitee.com/coderhyx/gofun"
)

/****************** 示例用法 ******************/

func main() {
	// 示例1：使用默认配置
	err := gofun.ExponentialBackoffRetry(context.Background(), func() error {
		log.Println("执行操作...")
		return fmt.Errorf("模拟失败")
	}, nil)
	log.Println("结果:", err)

	// 示例2：自定义配置
	ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
	defer cancel()

	cfg := &gofun.RetryConfig{
		MaxAttempts:  5,
		InitialDelay: 500 * time.Millisecond,
		JitterFactor: 0.5,
	}

	err = gofun.ExponentialBackoffRetry(ctx, func() error {
		log.Println("自定义配置操作...")
		return fmt.Errorf("模拟失败")
	}, cfg)
	log.Println("结果:", err)
}
